﻿using Ewell.Interface.Common.Model.Constant;
using Ewell.Interface.Common.Model.GateWay.Dto.InsuranceManager;
using System;
using System.Collections.Generic;

namespace Ewell.Interface.Common.Model.GateWay.GateWayUriInfo
{
    public class InsurInterfaceDubboService : GateWayUri
    {
        public override string url => "dubbo/cc.ewell.his.insurance.management.dubbo.InsurInterfaceDubboService";
        /// <summary>
        /// [1-100019-01]根据条件查询HIS基础数据对照关系
        /// </summary>
        public GateWayMethod queryMappingDataByExample => new QueryMappingDataByExample(url);
        /// <summary>
        /// [1-100025-01]根据条件查询医保接口所需交易数据
        /// </summary>
        public GateWayMethod queryTranDataByExample => new QueryTranDataByExample(url);
        /// <summary>
        /// 根据关键字查询目录分类的基础数据
        /// </summary>
        public GateWayMethod queryExtAppBasicDataListByExample => new InsurQueryExtAppBasicDataListByExample(url);
        /// <summary>
        /// [1-100033-01]保存基础数据
        /// </summary>
        public GateWayMethod saveExDictBasicData => new SaveExDictBasicData(url);

        /// <summary>
        /// [1-100033-01]保存外部目录基础数据--药品
        /// </summary>
        public GateWayMethod saveExDictMedicine => new SaveExDictMedicine(url);
        /// <summary>
        /// [1-100034-01]保存外部目录基础数据--收费项目
        /// </summary>
        public GateWayMethod saveExDictChargeItem => new SaveExDictChargeItem(url);
        /// <summary>
        /// [1-100035-01]根据外部目录基础数据标识更新下载状态
        /// </summary>
        public GateWayMethod updateDownloadStatusByIds => new UpdateDownloadStatusByIds(url);

        /// <summary>
        /// [1-100038-01]根据条件查询住院费用明细信息
        /// </summary>
        public GateWayMethod queryBillDetailByExample => new QueryBillDetailByExample(url);
        /// <summary>
        ///  "[1-100040-01]更新医保上传状态" 
        /// </summary>
        public GateWayMethod updateBillDetailUploadStatus => new UpdateBillDetailUploadStatus(url);
        /// <summary>
        /// 1-100041-01 保存HIS结算医保报销预算信息
        /// </summary> 
        /// <returns></returns>
        public GateWayMethod savePrePayMtInsurInfoV1 => new SavePrePayMtInsurInfoV1(url);

        /// <summary>
        /// 1-100042-01 更新HIS结算医保报销正式结算信息
        /// </summary> 
        /// <returns></returns>
        public GateWayMethod updatePayMtInsurInfoByExampleV1 => new UpdatePayMtInsurInfoByExampleV1(url);

        /// <summary>
        /// 1-100043-01 更新HIS结算医保报销退费信息
        /// </summary> 
        /// <returns></returns>
        public GateWayMethod updatePayMtInsurInfoRefundByExampleV1 => new UpdatePayMtInsurInfoRefundByExampleV1(url);
        /// <summary>
        /// 1-100045-01 根据条件查询HIS结算医保结算信息V1
        /// </summary>
        /// <param name="param"></param>
        /// <param name="hisUser"></param>
        /// <returns></returns>
        public GateWayMethod queryPayMtInsurInfoByExampleV1 => new QueryPayMtInsurInfoByExampleV1(url);


        /// <summary>
        /// 1-100044-01 同步住院费用明细
        /// </summary>
        /// <param name="param"></param>
        /// <param name="hisUser"></param>
        /// <returns></returns>
        public GateWayMethod syncBillDetail => new SyncBillDetail(url);
          
    }
    public class SyncBillDetail : GateWayMethod
    {
        public SyncBillDetail(string baseUrl) : base(baseUrl) { }
        public override string methodName => "syncBillDetail ";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.SyncBillDetailReq";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(SyncBillDetailReq);
        public override Type responseParamType => typeof(object);
        public override string desc => "1-100044-01 同步住院费用明细";
    }

    public class QueryPayMtInsurInfoByExampleV1 : GateWayMethod
    {
        public QueryPayMtInsurInfoByExampleV1(string baseUrl) : base(baseUrl) { }
        public override string methodName => "queryPayMtInsurInfoByExampleV1 ";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryPayMtInsurInfoByExampleReq";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(QueryPayMtInsurInfoByExampleReq);
        public override Type responseParamType => typeof(List<QueryPayMtInsurInfoByExampleResp>);
        public override string desc => "1-100045-01 根据条件查询HIS结算医保结算信息V1";
    }


    public class UpdatePayMtInsurInfoRefundByExampleV1 : GateWayMethod
    {
        public UpdatePayMtInsurInfoRefundByExampleV1(string baseUrl) : base(baseUrl) { }
        public override string methodName => "updatePayMtInsurInfoRefundByExampleV1";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.UpdatePayMtInsurInfoRefundByExampleReq";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(UpdatePayMtInsurInfoRefundByExampleReq);
        public override Type responseParamType => typeof(UpdatePayMtInsurInfoRefundByExampleResp);//UpdatePayMtInsurInfoRefundByExampleResp
        public override string desc => "1-100043-01 保存HIS结算医保报销预算信息";
    }
    public class UpdatePayMtInsurInfoByExampleV1 : GateWayMethod
    {
        public UpdatePayMtInsurInfoByExampleV1(string baseUrl) : base(baseUrl) { }
        public override string methodName => "updatePayMtInsurInfoByExampleV1";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.UpdatePayMtInsurInfoByExampleReq";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(UpdatePayMtInsurInfoByExampleReq);
        public override Type responseParamType => typeof(UpdatePayMtInsurInfoByExampleResp);//UpdatePayMtInsurInfoByExampleResp
        public override string desc => "1-100042-01 保存HIS结算医保报销预算信息";
    }
    public class SavePrePayMtInsurInfoV1 : GateWayMethod
    {
        public SavePrePayMtInsurInfoV1(string baseUrl) : base(baseUrl) { }
        public override string methodName => "savePrePayMtInsurInfoV1";
        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.SavePrePayMtInsurInforReq";
        public override DubboParamType paramType => DubboParamType.defaultParam;
        public override Type requestParamType => typeof(SavePrePayMtInsurInforReq);
        public override Type responseParamType => typeof(SavePrePayMtInsurInfoResp);// SavePrePayMtInsurInfoResp
        public override string desc => "1-100041-01 保存HIS结算医保报销预算信息";
    }
    public class QueryMappingDataByExample : GateWayMethod
    {
        public QueryMappingDataByExample(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryMappingDataByExample";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.MappingDataRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(MappingDataRequest);

        public override Type responseParamType => typeof(List<MappingDataResponse>);

        public override string desc => "[1-100019-01]根据条件查询HIS基础数据对照关系";
    }

    public class QueryTranDataByExample : GateWayMethod
    {
        public QueryTranDataByExample(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryTranDataByExample";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.TranDataRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(TranDataRequest);

        public override Type responseParamType => typeof(TranDataResponse);

        public override string desc => "[1-100025-01]根据条件查询医保接口所需交易数据";
    }

    public class InsurQueryExtAppBasicDataListByExample : GateWayMethod
    {
        public InsurQueryExtAppBasicDataListByExample(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryExtAppBasicDataListByExample";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryExtAppBasicDataListByExampleRequest";

        public override Type requestParamType => typeof(QueryExtAppBasicDataListByExampleRequest);

        public override Type responseParamType => typeof(List<QueryExtAppBasicDataListByExampleResponce>);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100027-01]根据关键字查询目录分类的基础数据";
    }

    public class SaveExDictBasicData : GateWayMethod
    {
        public SaveExDictBasicData(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "saveExDictBasicData";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.SaveExDictBasicDataRequest";

        public override Type requestParamType => typeof(SaveExDictBasicDataRequest);

        public override Type responseParamType => typeof(List<long?>);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100033-01]保存基础数据";
    }

    public class SaveExDictChargeItem : GateWayMethod
    {
        public SaveExDictChargeItem(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "saveExDictChargeItem";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.SaveExDictChargeItemRequest";

        public override Type requestParamType => typeof(SaveExDictChargeItemRequest);

        public override Type responseParamType => typeof(List<long?>);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100034-01]保存外部目录基础数据--收费项目";
    }


    public class SaveExDictMedicine : GateWayMethod
    {
        public SaveExDictMedicine(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "saveExDictMedicine";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.SaveExDictMedicineRequest";

        public override Type requestParamType => typeof(SaveExDictMedicineRequest);

        public override Type responseParamType => typeof(List<long?>);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100039-01]保存外部目录基础数据--药品";
    }

    public class UpdateDownloadStatusByIds : GateWayMethod
    {
        public UpdateDownloadStatusByIds(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "updateDownloadStatusByIds";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.updateDownloadStatusByIdsRequest";

        public override Type requestParamType => typeof(UpdateDownloadStatusByIdsRequest);

        public override Type responseParamType => typeof(object);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100035-01]根据外部目录基础数据标识更新下载状态";
    }


    public class QueryBillDetailByExample : GateWayMethod
    {
        public QueryBillDetailByExample(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryBillDetailByExample";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryBillDetailByExampleReq";

        public override Type requestParamType => typeof(List<QueryBillDetailByExampleReq>);

        public override Type responseParamType => typeof(object);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100038-01]根据条件查询住院费用明细信息";
    }



    public class UpdateBillDetailUploadStatus : GateWayMethod
    {
        public UpdateBillDetailUploadStatus(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "updateBillDetailUploadStatus";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.UpdateBillDetailUploadStatusReq";

        public override Type requestParamType => typeof(UpdateBillDetailUploadStatusReq);

        public override Type responseParamType => typeof(object);

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override string desc => "[1-100040-01]更新医保上传状态";
    }
}
